wayland: Set up monitor descriptions
authorMatthias Clasen <mclasen@redhat.com>
Thu, 2 Feb 2023 11:31:38 +0000 (12:31 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 2 Feb 2023 11:32:28 +0000 (12:32 +0100)
We get this information in the xdg_output protocol.

gdk/wayland/gdkdisplay-wayland.c
gdk/wayland/gdkmonitor-wayland.c
gdk/wayland/gdkmonitor-wayland.h

index 0f745c28dcb21fadf794d0dddf4a277d2eda8fe3..e04387df273e5751d4fd62b33cba7536492686ca 100644 (file)
@@ -2326,6 +2326,7 @@ apply_monitor_change (GdkWaylandMonitor *monitor)
                               monitor->x, monitor->y,
                               monitor->width, monitor->height });
   gdk_monitor_set_connector (GDK_MONITOR (monitor), monitor->name);
+  gdk_monitor_set_description (GDK_MONITOR (monitor), monitor->description);
   monitor->wl_output_done = FALSE;
   monitor->xdg_output_done = FALSE;
 
@@ -2382,7 +2383,7 @@ xdg_output_handle_name (void                  *data,
 {
   GdkWaylandMonitor *monitor = (GdkWaylandMonitor *) data;
 
-  GDK_DEBUG (MISC, "handle name xdg-output %d", monitor->id);
+  GDK_DEBUG (MISC, "handle name xdg-output %d: %s", monitor->id, name);
 
   monitor->name = g_strdup (name);
 }
@@ -2392,8 +2393,11 @@ xdg_output_handle_description (void                  *data,
                                struct zxdg_output_v1 *xdg_output,
                                const char            *description)
 {
-  GDK_DEBUG (MISC, "handle description xdg-output %d",
-                   ((GdkWaylandMonitor *)data)->id);
+  GdkWaylandMonitor *monitor = (GdkWaylandMonitor *) data;
+
+  GDK_DEBUG (MISC, "handle description xdg-output %d: %s", monitor->id, description);
+
+  monitor->description = g_strdup (description);
 }
 
 static const struct zxdg_output_v1_listener xdg_output_listener = {
index 3db7810f266b0c6de66f3a571fc97e42b1361243..17406ad6cd14f801a9f2644f4d856306c8ce5270 100644 (file)
@@ -46,6 +46,7 @@ gdk_wayland_monitor_finalize (GObject *object)
   GdkWaylandMonitor *monitor = (GdkWaylandMonitor *)object;
 
   g_free (monitor->name);
+  g_free (monitor->description);
 
   g_clear_pointer (&monitor->xdg_output, zxdg_output_v1_destroy);
 
index 69592bd28abd34976569a163178de3a37b1ea7bd..4397075407aabc46620751c807f81bb1a11a9d9a 100644 (file)
@@ -38,6 +38,7 @@ struct _GdkWaylandMonitor {
   int32_t width;
   int32_t height;
   char *name;
+  char *description;
   gboolean wl_output_done;
   gboolean xdg_output_done;
 };